package org.yzhzc.common.core.controller;

import cn.hutool.core.collection.CollectionUtil;
import org.yzhzc.common.core.domain.R;
import org.yzhzc.common.core.domain.TableDataInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;

public class BaseController {

    /**
     * 根据受影响行数返回操作结果
     * 如果受影响行数大于0，则返回成功；否则返回失败
     *
     * @param rows 数据库操作受影响的行数
     * @return R<Void> 操作结果对象
     */
    protected R<Void> toR(int rows) {
        return rows > 0 ? R.ok() : R.fail(); // 根据行数判断操作是否成功
    }

    /**
     * 根据布尔结果返回操作结果
     * 如果布尔值为true，则返回成功；否则返回失败
     *
     * @param result 布尔值表示操作是否成功
     * @return R<Void> 操作结果对象
     */
    protected R<Void> toR(boolean result) {
        return result ? R.ok() : R.fail(); // 根据布尔值判断操作是否成功
    }

    /**
     * 将列表数据封装为表格数据返回
     * 如果列表为空，则返回空的表格数据对象；
     * 如果列表不为空，则使用PageInfo计算总记录数，并返回成功的表格数据
     *
     * @param list 要封装的列表数据
     * @return TableDataInfo 表格数据对象，包括列表和总记录数
     */
    public TableDataInfo getTableDataInfo(List<?> list) {
        if (CollectionUtil.isEmpty(list)) {
            // 如果列表为空，直接返回空表格数据对象
            return TableDataInfo.empty();
        }

        // 列表不为空，计算总记录数并返回成功的表格数据
        return TableDataInfo.success(list, new PageInfo<>(list).getTotal());
    }
}
